builder: Make gtk_builder_extend_with_template() work with objects
authorBenjamin Otte <otte@redhat.com>
Fri, 1 Nov 2019 06:30:32 +0000 (07:30 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 30 May 2020 23:26:46 +0000 (19:26 -0400)
This will be relevant later when we introduce GtkListItem which is not a
GtkWidget.

gtk/gtkbuilder.c
gtk/gtkbuilder.h
gtk/gtkbuilderlistitemfactory.c
gtk/gtkwidget.c
gtk/tools/gtk-builder-tool-validate.c

index 4be00a4206b6dce1347b3698f22c771d73c0bc8a..6121d2ed8e9c1f3bfb958d9c6f47dec29d89d98d 100644 (file)
@@ -1256,7 +1256,7 @@ gtk_builder_add_objects_from_file (GtkBuilder   *builder,
 /**
  * gtk_builder_extend_with_template:
  * @builder: a #GtkBuilder
- * @widget: the widget that is being extended
+ * @object: the object that is being extended
  * @template_type: the type that the template is for
  * @buffer: the string to parse
  * @length: the length of @buffer (may be -1 if @buffer is nul-terminated)
@@ -1272,7 +1272,7 @@ gtk_builder_add_objects_from_file (GtkBuilder   *builder,
  */
 gboolean
 gtk_builder_extend_with_template (GtkBuilder   *builder,
-                                  GtkWidget    *widget,
+                                  GObject      *object,
                                   GType         template_type,
                                   const gchar  *buffer,
                                   gssize        length,
@@ -1283,9 +1283,9 @@ gtk_builder_extend_with_template (GtkBuilder   *builder,
   char *filename;
 
   g_return_val_if_fail (GTK_IS_BUILDER (builder), 0);
-  g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
+  g_return_val_if_fail (G_IS_OBJECT (object), 0);
   g_return_val_if_fail (g_type_name (template_type) != NULL, 0);
-  g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (widget), template_type), 0);
+  g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (object), template_type), 0);
   g_return_val_if_fail (buffer && buffer[0], 0);
 
   tmp_error = NULL;
@@ -1297,7 +1297,7 @@ gtk_builder_extend_with_template (GtkBuilder   *builder,
   priv->template_type = template_type;
 
   filename = g_strconcat ("<", g_type_name (template_type), " template>", NULL);
-  gtk_builder_expose_object (builder, g_type_name (template_type), G_OBJECT (widget));
+  gtk_builder_expose_object (builder, g_type_name (template_type), object);
   _gtk_builder_parser_parse_buffer (builder, filename,
                                     buffer, length,
                                     NULL,
index 94e8ed292b6a6ca2a7ee6e0239f07538885f9724..6aa627e1942080ce9afd620fe6912cb1ca0f3e93 100644 (file)
@@ -197,7 +197,7 @@ GClosure *   gtk_builder_create_closure          (GtkBuilder    *builder,
 
 GDK_AVAILABLE_IN_ALL
 gboolean  gtk_builder_extend_with_template  (GtkBuilder    *builder,
-                                             GtkWidget     *widget,
+                                             GObject       *object,
                                              GType          template_type,
                                              const gchar   *buffer,
                                              gssize         length,
index 226d3a7ea117420e55834ab50cb84bd177199a0f..12048d61e7f481c09135a58419a9bd73e293c48b 100644 (file)
@@ -98,7 +98,7 @@ gtk_builder_list_item_factory_setup (GtkListItemFactory *factory,
   if (self->scope)
     gtk_builder_set_scope (builder, self->scope);
 
-  if (!gtk_builder_extend_with_template  (builder, GTK_WIDGET (list_item), G_OBJECT_TYPE (list_item),
+  if (!gtk_builder_extend_with_template  (builder, G_OBJECT (list_item), G_OBJECT_TYPE (list_item),
                                          (const gchar *)g_bytes_get_data (self->bytes, NULL),
                                          g_bytes_get_size (self->bytes),
                                          &error))
index 32286e9d4dbbc62a24bdf1f082b79dd1df03e3a2..2a146c2e804bc112dc78f9cd026f76d8fa0204ba 100644 (file)
@@ -10959,7 +10959,7 @@ gtk_widget_init_template (GtkWidget *widget)
    * will validate that the template is created for the correct GType and assert that
    * there is no infinite recursion.
    */
-  if (!gtk_builder_extend_with_template  (builder, widget, class_type,
+  if (!gtk_builder_extend_with_template  (builder, G_OBJECT (widget), class_type,
                                          (const gchar *)g_bytes_get_data (template->data, NULL),
                                          g_bytes_get_size (template->data),
                                          &error))
index 38fdcdcc918f314ae984e4a3797a0bce0a8a1c26..9b6132e64f88ec375e39e9e08a42a64ed656f6fc 100644 (file)
@@ -58,7 +58,7 @@ do_validate_template (const gchar *filename,
                       const gchar *parent_name)
 {
   GType template_type;
-  GtkWidget *widget;
+  GObject *object;
   GtkBuilder *builder;
   GError *error = NULL;
   gint ret;
@@ -70,15 +70,15 @@ do_validate_template (const gchar *filename,
   if (template_type == G_TYPE_INVALID)
     template_type = make_fake_type (type_name, parent_name);
 
-  widget = g_object_new (template_type, NULL);
-  if (!widget)
+  object = g_object_new (template_type, NULL);
+  if (!object)
     {
       g_printerr ("Failed to create an instance of the template type %s\n", type_name);
       exit (1);
     }
 
   builder = gtk_builder_new ();
-  ret = gtk_builder_extend_with_template (builder, widget, template_type, " ", 1, &error);
+  ret = gtk_builder_extend_with_template (builder, object , template_type, " ", 1, &error);
   if (ret)
     ret = gtk_builder_add_from_file (builder, filename, &error);
   g_object_unref (builder);